/**
 * 权限
 */
/* 
  判断是否有权限的函数
  参数1: 路由对象
  参数2: 当前角色
  返回值: true证明有权限  false证明没有权限
*/
export function hasPermission(route, role) {
  if (route.meta && route.meta.roles) {
    return route.meta.roles.includes(role);
  } else {
    return true;
  }
}

/**
 * 过滤路由的函数
 * 参数1:  当前的异步路由
 * 参数2:  当前的角色
 */
export function filterRoutes(asyncRoutes, role) {
  // 过滤出 有权限可以访问的路由
  let arr = asyncRoutes.filter((item) => {
    if (hasPermission(item, role)) {
      // 如果一级有权限 就看有没有儿子 看儿子的权限
      if (item.children && item.children.length) {
        // 递归过滤
        item.children = filterRoutes(item.children, role);
      }
      return true;
    } else {
      return false;
    }
  });

  // 返回算出来的有权限的路由数组
  return arr;
}
